package com.starry.module.system.core.file.service;

import com.starry.core.common.domain.vo.PageVo;
import com.starry.module.system.api.file.domain.qo.FileConfigPageQo;
import com.starry.module.system.api.file.domain.qo.FileConfigQo;
import com.starry.module.system.api.file.domain.vo.FileConfigDtlVo;
import com.starry.module.system.api.file.domain.vo.FileConfigVo;
import com.starry.module.system.core.file.client.FileClient;

import java.util.Set;

/**
 * 文件配置-服务
 * @author xiaoke
 */
public interface FileConfigService {

    /**
     * 分页查询所有数据
     *
     * @param pageQo 查询实体
     * @return 所有数据
     */
    PageVo<FileConfigVo> page(FileConfigPageQo pageQo);

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    FileConfigDtlVo getById(Long id);

    /**
     * 获取主配置
     * @return FileConfig
     */
    FileClient getMasterClient();

    /**
     * 根据id获取文件客户端
     * @param configId 配置Id
     * @return {@link FileClient}
     */
    FileClient getFileClient(Long configId);

    /**
     * 新增数据
     *
     * @param fileConfigQo 实体对象
     * @return 新增结果
     */
    Long save(FileConfigQo fileConfigQo);

    /**
     * 修改数据
     *
     * @param fileConfigQo 实体对象
     */
    void updateById(FileConfigQo fileConfigQo);

    /**
     * 删除数据
     *
     * @param idList 主键集合
     */
    void removeByIds(Set<Long> idList);

    /**
     * 设置默认配置
     * @param id 主键
     */
    void setByIdConfigMaster(Long id);
}

